import axios from "axios";
import config from '../api/config'

//创建一个axios实例对象
const service = axios.create({
    baseURL: config.baseApi,
});

// 在请求之前做一些事情
service.interceptors.request.use((req) => {
    //可以自定义header
    // jwt-token认证的时候
    return req;
}
);

/*
 *在请求之后做一些事情
 *这部分最重要，根据自己的后端数据获取来写，否则很容易出现错误
 *比如方法能获取到数据但是表格内容无法显示的问题
 */
service.interceptors.response.use(
    (response) => {
        // 通用处理，例如日志记录
        return response;
    },
    (error) => {
        console.error('请求失败:', error);
        // 可以根据错误类型或状态码展示不同的消息
        if (error.response) {
            // 请求已发出，服务器也响应了，但状态码不在 2xx 范围内
            return Promise.reject(new Error(error.response.data.message));
        } else if (error.request) {
            // 请求已发出，但没有收到响应
            return Promise.reject(new Error('服务器未响应'));
        } else {
            // 发生了触发请求错误的问题
            return Promise.reject(new Error(error.message));
        }
    }
);

//封装的核心函数
function request(options) {
    options.method = options.method || 'get'
    if (options.method.toLowerCase() == 'get') {
        options.params = options.data;
    }

    return service(options);
}
export default request;